<?php
session_start();
// 设置图片宽度和高度
$width = 120;
$height = 40;

// 创建图像资源
$image = imagecreatetruecolor($width, $height);

// 生成随机背景色（浅色）
$bgColor = imagecolorallocate($image, rand(200, 255), rand(200, 255), rand(200, 255));
imagefill($image, 0, 0, $bgColor);

// 生成随机验证码字符
$chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$code = '';
for ($i = 0; $i < 4; $i++) {
    $code .= $chars[rand(0, strlen($chars) - 1)];
}

// 将验证码存入session
$_SESSION['yzm'] = strtolower($code);

// 生成干扰线
for ($i = 0; $i < 5; $i++) {
    $lineColor = imagecolorallocate($image, rand(100, 150), rand(100, 150), rand(100, 150));
    imageline(
        $image,
        rand(0, $width),
        rand(0, $height),
        rand(0, $width),
        rand(0, $height),
        $lineColor
    );
}

// 生成噪点
for ($i = 0; $i < 50; $i++) {
    $pixelColor = imagecolorallocate($image, rand(50, 100), rand(50, 100), rand(50, 100));
    imagesetpixel(
        $image,
        rand(0, $width),
        rand(0, $height),
        $pixelColor
    );
}

// 绘制验证码文本
$fontSize = 18;
$x = 15;
for ($i = 0; $i < 4; $i++) {
    $textColor = imagecolorallocate($image, rand(0, 50), rand(0, 50), rand(0, 50));
    // 随机旋转角度
    $angle = rand(-15, 15);
    imagettftext(
        $image,
        $fontSize,
        $angle,
        $x,
        30,
        $textColor,
        'E:\phpstudy_pro\WWW\cs1\p8\simhei.ttf', // 需要系统中有该字体文件
        $code[$i]
    );
    $x += 25;
}
// 设置响应头，输出图像
header('Content-Type: image/png');
imagepng($image);

// 释放资源
imagedestroy($image);

?>